﻿


function wireEvents() {
    $(function () {

        function split(val) {
            return val.split(/,/);
        }

        function extractLast(term) {
            var nonSpaceTerm = split(term).pop().toString();
            if (/^\s+\S*/.test(nonSpaceTerm)) {
                nonSpaceTerm = nonSpaceTerm.replace(/\s+/, "");
            }
            return split(nonSpaceTerm).pop();
        }

        $("input[name*='txtKeyword']")
        // don't navigate away from the field on tab when selecting an item
               .bind("keydown", function (event) {
                   if (event.keyCode === $.ui.keyCode.TAB &&
                                   $(this).data("autocomplete").menu.active) {
                       event.preventDefault();
                   }
               })
               .autocomplete(
      {
          minLength: 0,
          source: function (request, response) {

              // delegate back to autocomplete, but extract the last term
              response($.ui.autocomplete.filter(
                          availableTags, extractLast(request.term)));
          },
          focus: function () {
              // prevent value inserted on focus
              return false;
          },
          select: function (event, ui) {
              var terms = split(this.value);
              // remove the current input
              terms.pop();
              // add the selected item
              terms.push(ui.item.value);
              // add placeholder to get the comma-and-space at the end
              terms.push("");
              availableURLTags.forEach(function (entry) {
                  if (entry.split('~', 1) + "," == terms)

                      $(location).attr('href', entry.split('~').pop());
              });

              this.value = terms.slice(0, terms.length - 1);
              this.value += " ";
              return false;
          }
      });
    });
}